package com.terry.test3;

import java.util.*;
import java.util.stream.IntStream;

/**
 * 最长的指定瑕疵度的元音子串 |
 *
 * 滑动窗口
 *
 * 时间限制：1秒 | 内存限制：262144K | 语言限制：不限
 * 开头和结尾都是元音字母（aeiouAEIOU）的字符串为 元音字符串 ，其中混杂的非元音字母数量为其 瑕疵度 。比如:
 * · “a” 、 “aa”是元音字符串，其瑕疵度都为0
 * · “aiur”不是元音字符串（结尾不是元音字符）
 * · “abira”是元音字符串，其瑕疵度为2
 * 给定一个字符串，请找出指定瑕疵度的最长元音字符子串，并输出其长度，如果找不到满足条件的元音字符子串，输出0。
 * 子串：字符串中任意个连续的字符组成的子序列称为该字符串的子串。
 *
 * 输入描述:
 *
 * 首行输入是一个整数，表示预期的瑕疵度flaw，取值范围[0, 65535]。
 * 接下来一行是一个仅由字符a-z和A-Z组成的字符串，字符串长度(0, 65535]。
 *
 * 输出描述:
 *
 * 输出为一个整数，代表满足条件的元音字符子串的长度。
 *
 * 示例1：
 *
 * 输入
 * 0
 * asdbuiodevauufgh
 * 输出
 * 3
 * 说明
 * 满足条件的最长元音字符子串有两个，分别为uio和auu，长度为3。
 *
 * 示例2：
 *
 * 输入
 * 2
 * aeueo
 * 输出
 * 0
 * 说明
 * 没有满足条件的元音字符子串，输出0
 *
 * 示例3：
 *
 * 输入
 * 1
 * aabeebuu
 * 输出
 * 5
 * 说明
 * 满足条件的最长元音字符子串有两个，分别为aabee和eebuu，长度为5
 *
 * @author 小八
 * @date 2023年02月09日11:28
 */
public class Title7 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String yy = "aeiouAEIOU";
        Map<Character,Integer> map = new HashMap<>();
        IntStream.range(0,yy.length()).forEach(index->{
            map.put(yy.charAt(index),1);
        }) ;

        while(in.hasNextLine()){
            Integer desNum = Integer.parseInt(in.nextLine());
            String line = in.nextLine();
            int maxCount = 0;
            Deque<Character> deque = new ArrayDeque<>();
            int xcCount = 0 ;
            for(int i=0;i<line.length();i++){
                char c = line.charAt(i);
                if(!map.containsKey(c)){
                    xcCount++;
                }
                deque.addLast(c);

                if(xcCount==desNum){
                    if(map.containsKey(deque.getLast()) && map.containsKey(deque.getFirst())){
                        maxCount = Math.max(maxCount,deque.size());
                    }
                }
                while(xcCount>desNum){
                    if(!map.containsKey(deque.removeFirst())){
                        xcCount -- ;
                    }
                }
            }
            System.out.print(maxCount);
        }
    }

}
